define([
    'text!planmanage/addfileplan/templates/AddFilePlan.html',
    'planmanage/addfileplan/views/AddFilePlan_first',
    'planmanage/addfileplan/views/AddFilePlan_second',
    'planmanage/addfileplan/views/AddFilePlan_third',
    'planmanage/addfileplan/views/AddFilePlan_fourth',
    'planmanage/addfileplan/views/AddFilePlan_fifth',
    'planmanage/addfileplan/views/AddFilePlan_variable'
], function(AddFilePlanViewTpl, FirstView, SecondView, ThirdView, FourthView, FifthView, VariableView) {
    var firstView = new FirstView();
    var secondView = new SecondView();
    var thirdView = new ThirdView();
    var fourthView = new FourthView();
    var fifthView = new FifthView();
    return fish.View.extend({
        template: fish.compile(AddFilePlanViewTpl),
        i18nData: fish.extend({}),
        views: {
            '.firstStep-view': firstView
        },
        events: {
            'click #button-next': 'nextStep',
            'click #button-prov': 'provStep',
            // 'click #button-add-strategy': 'addStrategy',
            'click #button-submit': 'submit',
            'click #button-save-draft': 'saveDraft',
            'click #button-prov': 'provStep'
            
        },

        initialize: function() {
            // 计划表单数据正确性验证通过
            fish.on('oneStrategy', $.proxy(this.nextStep, this));
            // this.listenTo(this.getView(".conf-steps-view"), 'oneStrategy', $.proxy(this.nextStep,this));
            // 继续添加计划 按钮点击事件
            fish.on('addPlan', $.proxy(this.addPlan, this));
            // 查看计划列表 按钮点击事件
            fish.on('planGrid', $.proxy(this.planGrid, this));
            // 查看草稿箱 按钮点击事件
            fish.on('planGridDraft', $.proxy(this.planGridDraft, this));
        },

        serialize: function() {
            return this.i18nData;
        },

        //这里用来初始化页面上要用到的fish组件
        afterRender: function() {
            var me = this;
            // 隐藏部分按钮-上一步、下一步、继续添加策略
            $('#button-prov').addClass("hidden");
            $('#button-next').addClass("hidden");
            $('#button-submit').addClass("hidden");
            // $('#button-add-strategy').addClass("hidden");

            // 是否是编辑、草稿状态
            if(act == 'edit' || act == 'draft'){
                fish.trigger('getPlanInfo');
            }
        },

        // 下一步 按钮点击事件
        nextStep: function(strategyName){
            // 当前是第一步
            if($('.firstStep-view')[0].style.display != 'none'){
                // 验证并获取计划信息配置表单数据
                fish.trigger('getPlanFormData', strategyName);

                if(VariableView.getPlanForm_OK()){
                    // 隐藏第一步，显示第二步
                    this.setView('.secondStep-view', secondView);
                    this.renderViews('.secondStep-view');
                    $('.firstStep-view').hide();
                    $('.secondStep-view').show();
                    // 导航栏
                    $('.step-ing .st2').addClass('st2On');
                    // 隐藏部分按钮-完成提交
                    $('#button-submit').addClass("hidden");
                    // 显示部分按钮-上一步、下一步
                    $('#button-prov').removeClass("hidden");
                    $('#button-next').removeClass("hidden");

                    if(act == 'edit' || act == 'draft'){
                        // 获取策略信息,并回绑源数据表单
                        fish.trigger('getStrategyInfo');
                    }
                    return;
                }
            }
            // 当前是第二步
            if($('.secondStep-view')[0].style.display != 'none'){
                // 验证并获取源信息配置表单数据
                fish.trigger('getSrcFormData');

                if(VariableView.getSrcFileForm_OK()){
                    // 判断是否需要目标数据
                    if(VariableView.getPlanFormData().operType == "0"){// 体检备份清理，需要目标数据
                        // 隐藏第二步，显示第三步
                        this.setView('.thirdStep-view', thirdView);
                        this.renderViews('.thirdStep-view');
                        $('.secondStep-view').hide();
                        $('.thirdStep-view').show();
                        // 导航栏
                        $('.step-ing .st3').addClass('st3On');

                        if(act == 'edit' || act == 'draft'){
                            // 目标数据表单数据回绑
                            fish.trigger('setTargetFileForm');
                        }
                        return;
                    }else{
                        // 隐藏第三步，显示第四步
                        this.setView('.fourthStep-view', fourthView);
                        this.renderViews('.fourthStep-view');
                        $('.secondStep-view').hide();
                        $('.fourthStep-view').show();
                        // 导航栏
                        $('.step-ing .st3').addClass('st3On');
                        $('.step-ing .st4').addClass('st4On');
                        // 隐藏部分按钮-下一步
                        $('#button-next').addClass("hidden");
                        // 显示部分按钮-完成提交、保存草稿、继续添加策略
                        $('#button-submit').removeClass("hidden");
                        // 是否是编辑、草稿状态
                        if(act != 'edit' || act == 'draft'){
                            $('#button-save-draft').removeClass("hidden");
                        }
                        // $('#button-add-strategy').removeClass("hidden");

                        if(act == 'edit' || act == 'draft'){
                            // 条件信息配置表单数据回绑
                            fish.trigger('setConditionFileForm');
                        }
                        return;
                    }
                }
            }
            // 当前是第三步
            if($('.thirdStep-view')[0].style.display != 'none'){
                // 验证并获取目标信息配置表单数据
                fish.trigger('getTargetFileFormData');

                if(VariableView.getTargetFileForm_OK()){
                    // 隐藏第三步，显示第四步
                    this.setView('.fourthStep-view', fourthView);
                    this.renderViews('.fourthStep-view');
                    $('.thirdStep-view').hide();
                    $('.fourthStep-view').show();
                    // 导航栏
                    $('.step-ing .st4').addClass('st4On');
                    // 隐藏部分按钮-下一步
                    $('#button-next').addClass("hidden");
                    // 显示部分按钮-完成提交、保存草稿、继续添加策略
                    $('#button-submit').removeClass("hidden");
                    // 是否是编辑、草稿状态
                    if(act != 'edit' || act == 'draft'){
                        $('#button-save-draft').removeClass("hidden");
                    }
                    // $('#button-add-strategy').removeClass("hidden");

                    if(act == 'edit' || act == 'draft'){
                        // 条件信息配置表单数据回绑
                        fish.trigger('setConditionFileForm');
                    }
                    return;
                }
            }
        },

        // 上一步 按钮点击事件
        provStep: function(){
            var me = this;
            // 当前是第二步
            if($('.secondStep-view')[0].style.display != 'none'){
                fish.confirm("返回上一步会清空当前界面配置，确定返回?").result.then(function(){
                    // 隐藏第二步，显示第一步
                    $('.firstStep-view').show();
                    $('.secondStep-view').hide();
                    // 导航栏
                    $('.step-ing .st2').removeClass('st2On');
                    // 隐藏部分按钮-上一步、下一步
                    $('#button-prov').addClass("hidden");
                    $('#button-next').addClass("hidden");
                    // 显示部分按钮-完成提交
                    // $('#button-submit').removeClass("hidden");
                    // 源主机配置是否成功
                    VariableView.setSrcHost_OK(false);
                    // 源目录表达式配置预览是否成功
                    VariableView.setSourceXpath_OK(false);
                });
            }
            // 当前是第三步
            if($('.thirdStep-view')[0].style.display != 'none'){
                fish.confirm("返回上一步会清空当前界面配置，确定返回?").result.then(function(){
                    // 隐藏第三步，显示第四步
                    $('.secondStep-view').show();
                    $('.thirdStep-view').hide();
                    // 导航栏
                    $('.step-ing .st3').removeClass('st3On');
                    // 目标主机配置是否成功
                    VariableView.setDestHost_OK(false);
                    // 目标目录表达式配置预览是否成功
                    VariableView.setTargetXpath_OK(false);
                });
            }
            // 当前是第四步
            if($('.fourthStep-view')[0].style.display != 'none'){
                fish.confirm("返回上一步会清空当前界面配置，确定返回?").result.then(function(){
                    // 判断是否需要目标数据
                    if(VariableView.getPlanFormData().operType == "0"){
                        // 隐藏第四步，显示第三步
                        $('.thirdStep-view').show();
                        $('.fourthStep-view').hide();
                        // 导航栏
                        $('.step-ing .st4').removeClass('st4On');
                        // 隐藏部分按钮-完成提交、继续添加策略
                        $('#button-submit').addClass("hidden");
                        $('#button-save-draft').addClass("hidden");
                        // $('#button-add-strategy').addClass("hidden");
                        // 显示部分按钮-下一步
                        $('#button-next').removeClass("hidden");
                    }else{
                        // 隐藏第四步，显示第二步
                        $('.secondStep-view').show();
                        $('.fourthStep-view').hide();
                        // 导航栏
                        $('.step-ing .st3').removeClass('st3On');
                        $('.step-ing .st4').removeClass('st4On');
                        // 隐藏部分按钮-完成提交、继续添加策略
                        $('#button-submit').addClass("hidden");
                        $('#button-save-draft').addClass("hidden");
                        // $('#button-add-strategy').addClass("hidden");
                        // 显示部分按钮-下一步
                        $('#button-next').removeClass("hidden");
                    }
                });
            }
            return;
        },

        // 继续添加策略 按钮点击事件
        addStrategy: function(){
            // 隐藏第四步，显示第一步
            $('.firstStep-view').show();
            $('.fourthStep-view').hide();
            // 导航栏
            $('.step-ing .st2').removeClass('st2On');
            $('.step-ing .st3').removeClass('st3On');
            $('.step-ing .st4').removeClass('st4On');
            // 隐藏部分按钮-上一步、继续添加策略
            $('#button-prov').addClass("hidden");
            // $('#button-add-strategy').addClass("hidden");
            return;
        },

        // 完成提交 按钮点击事件
        submit: function(){
            var me = this;
            // 验证并获取目标信息配置表单数据
            fish.trigger('getConditionFileFormData');

            if(VariableView.getConditionFileForm_OK()){
                // 获取4个配置表单数据
                // console.info(VariableView.getPlanFormData());
                // console.info(VariableView.getSrcFileFormData());
                // console.info(VariableView.getTargetFileFormData());
                // console.info(VariableView.getConditionFileFormData());

                var planData = _.extend(
                    VariableView.getPlanFormData(),
                    VariableView.getSrcFileFormData(),
                    VariableView.getTargetFileFormData(),
                    VariableView.getConditionFileFormData()
                );
                planData.staffId = session.user.id;
                console.info(planData);
                // 向后台提交数据
                if(act == 'edit' || act == 'draft'){
                    planData.dmPlanId = dmPlanId;
                    planData.dmStrategyId = VariableView.getDmStrategyId();
                    planData.groupNbr = VariableView.getGroupNbr();
                    planData.sourceDataId = VariableView.getSourceDataId();
                    if(act == 'edit'){
                        planData.act = 'edit';
                    }else{
                        planData.act = 'saveDraft';
                    }
                }
                fish.ajax({
                    url: ctx + '/baseconfig/dmfileplan/addAllInfo.do',
                    showMask: false,  //是否自动显式全局遮罩
                    showError: true, //在出现异常时自动显示异常信息，后台需要返回的数据格式：{code:'ERROR-1001',message:'登录失败'}
                    timeout: 30000,   //超过3秒显式全局遮罩，此参数在showMask为true时才有效
                    data: planData,
                    beforeSend: function(){
                        $.blockUI({message : "整个计划信息：数据提交中,请稍候..."});
                    },
                    complete: function(xhr, status){
                        $.unblockUI();
                        if(status == 'timeout'){
                            fish.toast('error', "网络请求超时");
                            return;
                        }
                        if(xhr.responseJSON.success == false){
                            fish.toast('error', xhr.responseJSON.msg);
                            return;
                        }
                        // 隐藏第四步，显示第五步
                        me.setView('.fifthStep-view', fifthView);
                        me.renderViews('.fifthStep-view');
                        $('.fifthStep-view').show();
                        $('.fourthStep-view').hide();
                        // 导航栏
                        $('.step-ing .st2').addClass('st2On');
                        $('.step-ing .st3').addClass('st3On');
                        $('.step-ing .st4').addClass('st4On');
                        $('.step-ing .st5').addClass('st5On');
                        // 隐藏部分按钮-上一步、继续添加策略、完成提交
                        $('#button-prov').addClass("hidden");
                        $('#button-save-draft').addClass("hidden");
                        // $('#button-add-strategy').addClass("hidden");
                        $('#button-submit').addClass("hidden");
                    },
                    //【注意】如果你在这里配置了自己的error处理函数，fish.ajax就不会自动帮你显示异常信息了！
                    error:function(){
                        $.unblockUI();
                    }
                });
            }
        },

        // 保存草稿 按钮点击事件
        saveDraft: function(){
            var me = this;
            // 验证并获取目标信息配置表单数据
            fish.trigger('getConditionFileFormData');

            if(VariableView.getConditionFileForm_OK()){
                // 获取4个配置表单数据
                // console.info(VariableView.getPlanFormData());
                // console.info(VariableView.getSrcFileFormData());
                // console.info(VariableView.getTargetFileFormData());
                // console.info(VariableView.getConditionFileFormData());

                var planData = _.extend(
                    VariableView.getPlanFormData(),
                    VariableView.getSrcFileFormData(),
                    VariableView.getTargetFileFormData(),
                    VariableView.getConditionFileFormData()
                );
                planData.staffId = session.user.id;
                planData.act = 'addDraft';
                console.info(planData);
                // 向后台提交数据
                if(act == 'draft'){
                    planData.dmPlanId = dmPlanId;
                    planData.dmStrategyId = VariableView.getDmStrategyId();
                    planData.groupNbr = VariableView.getGroupNbr();
                    planData.sourceDataId = VariableView.getSourceDataId();
                    planData.act = 'draft';
                }
                fish.ajax({
                    url: ctx + '/baseconfig/dmfileplan/addAllInfo.do',
                    showMask: false,  //是否自动显式全局遮罩
                    showError: true, //在出现异常时自动显示异常信息，后台需要返回的数据格式：{code:'ERROR-1001',message:'登录失败'}
                    timeout: 30000,   //超过3秒显式全局遮罩，此参数在showMask为true时才有效
                    data: planData,
                    beforeSend: function(){
                        $.blockUI({message : "整个计划信息：数据提交中,请稍候..."});
                    },
                    complete: function(xhr, status){
                        $.unblockUI();
                        if(status == 'timeout'){
                            fish.toast('error', "网络请求超时");
                            return;
                        }
                        if(xhr.responseJSON.success == false){
                            fish.toast('error', xhr.responseJSON.msg);
                            return;
                        }
                        // 隐藏第四步，显示第五步
                        me.setView('.fifthStep-view', fifthView);
                        me.renderViews('.fifthStep-view');
                        $('.fifthStep-view').show();
                        $('.fourthStep-view').hide();
                        // 导航栏
                        $('.step-ing .st2').addClass('st2On');
                        $('.step-ing .st3').addClass('st3On');
                        $('.step-ing .st4').addClass('st4On');
                        $('.step-ing .st5').addClass('st5On');
                        // 隐藏部分按钮-上一步、继续添加策略、完成提交
                        $('#button-prov').addClass("hidden");
                        $('#button-save-draft').addClass("hidden");
                        // $('#button-add-strategy').addClass("hidden");
                        $('#button-submit').addClass("hidden");
                        // 控制显示-草稿箱
                        fish.trigger('showDraft');
                    },
                    //【注意】如果你在这里配置了自己的error处理函数，fish.ajax就不会自动帮你显示异常信息了！
                    error:function(){
                        $.unblockUI();
                    }
                });
            }
        },

        // 继续添加计划 按钮点击事件
        addPlan: function(){
            // 把所有变量重置
            dmPlanId = 0;
            act = 'add';
            VariableView.reSetAllVariable();
            // 隐藏第四步，显示第一步
            this.renderViews();
            $('.firstStep-view').show();
            $('.fifthStep-view').hide();
            $('#button-save-draft').addClass("hidden");
            // 导航栏
            $('.step-ing .st2').removeClass('st2On');
            $('.step-ing .st3').removeClass('st3On');
            $('.step-ing .st4').removeClass('st4On');
            $('.step-ing .st5').removeClass('st5On');
            console.info(VariableView.getPlanFormData());
            console.info(VariableView.getSrcFileFormData());
            console.info(VariableView.getTargetFileFormData());
            console.info(VariableView.getConditionFileFormData());
            return;
        },

        // 查看计划列表 按钮点击事件
        planGrid: function(){
            var iocpUrl = document.referrer;
            if(iocpUrl.indexOf('portal')>-1){
                iocpUrl = iocpUrl.substring(0,iocpUrl.indexOf('portal'));
            }
            $.ajax({
                url : iocpUrl+'base/sendMessage.do?message=openUrlqq("'+webRoot+editFilePlanURL+'","'+editFilePlanName+'",'+editFilePlanId+')&channel='+parentMid,
                dataType : "jsonp",
                timeout : 30000,
                jsonpCallback:"jsonData",
                success:function(data){
                },
                error:function(){
                }
            });
        },

        // 查看计划列表 按钮点击事件
        planGridDraft: function(){
            var iocpUrl = document.referrer;
            if(iocpUrl.indexOf('portal')>-1){
                iocpUrl = iocpUrl.substring(0,iocpUrl.indexOf('portal'));
            }
            $.ajax({
                url : iocpUrl+'base/sendMessage.do?message=openUrlqq("'+webRoot+draftFileURL+'","'+draftFileName+'",'+draftFileId+')&channel='+parentMid,
                dataType : "jsonp",
                timeout : 30000,
                jsonpCallback:"jsonData",
                success:function(data){
                },
                error:function(){
                }
            });
        }
    });
});
